#!/bin/bash
basepath=$(cd `dirname $0`; pwd)
. $basepath/../common/common.sh

app=$1;
area=$2;

_vmConfigBase=/usr/local/temp/config/ccvm
_vmConfigFile="";

_webappBase=/usr/local/app
_webappConfigPath="";

_webappPath="";
_appPropertyFiles=();
_vmConfigKvSet=();

#锁定应用的位置
function locateWebapp(){

	echo "";
	echo "";
	echo "1.尝试锁定应用安装路径:"

	cd $_webappBase/*$area*/*_$app

	ASSERT $? "	 没有找到应用路径:"$_webappBase/*$area*/*_$app;

	_webappPath=`pwd`;

	echo "----1.1 锁定应用的路径:"$_webappPath

	cd $_webappPath/webapps/$app*/WEB-INF/classes

	ASSERT $? "----1.2 没有找到应用配置路径,应用是否已经安装? "$_webappPath/webapps/$app*/WEB-INF/classes;

	_webappConfigPath=`pwd`;

	echo "----1.3 锁定应用的配置路径:"$_webappConfigPath;

	#通过路径,将准确的area找到,覆盖原来的模糊area.
	arr=(${_webappPath//// })  
	area=${arr[${#arr[*]}-2]}
	echo "----1.4 锁定应用区域:"$area;

}

function locateVmConfig(){

	echo "";
	echo "";
	echo "2.尝试锁定应用自定义vm环境配置文件:"

	_vmConfigFile=$_vmConfigBase/${area}"_"${app};

	if [[ ! -f $_vmConfigFile ]]; then
		ERROR_EXIT "应用的对应vm环境替换配置文件没有找到:"$_vmConfigFile;
	fi

	echo "----2.1 锁定应用的对应vm环境替换配置文件:"$_vmConfigFile;
	cat $_vmConfigFile;
	echo "----2.2 文件显示完毕";
	
}

function findAppProperties(){

	echo "";
	echo "";
	echo "3.列举应用安装目录下的所有配置文件:"

	key=$1;
	value=$2;

	for file in `find $_webappConfigPath`
	do
		if [[ -f $file && "${file##*.}" == "properties" ]]; then
			_appPropertyFiles+=(${file});

			# sed -i.bak "s/$key.*/$key=$value/g" $file;
		fi
	done		

	echo "----3.1 找到下列配置文件:"${_appPropertyFiles[@]};
}

function loadVmKvSet(){

	echo "";
	echo "";
	echo "4.列举所有kv:"

	while read line
	do
		echo $line;
		if [[ ! `echo $line |grep ^#` && -n $line ]]; then
			arr=(${line//=/ })

			if [[ ${#arr[@]} == 2   ]]; then
				_vmConfigKvSet+=(${line});
			fi
	   fi
	   	
	done < $_vmConfigFile;

	echo "----4.1需要替换的kv:" ${_vmConfigKvSet[@]};
}

function doReplace(){

	echo "";
	echo "";
	echo "5.开始处理替换:"

	for file in ${_appPropertyFiles[@]}
	do
		if [[ ! -f $file ]]; then
			continue;
		fi

		for kv in ${_vmConfigKvSet[@]}
		do
			arr=(${kv//=/ })
			key=${arr[0]}
			value=${arr[1]}

			isFind=`sed -n "/${key}.*=/p" ${file}`;

			if [[ ! -z ${isFind} ]]; then

				# echo "--"
				# echo $isFind;
				# echo " --"
				# echo "$file"

				sed -i "s/$key.*=.*/$key=$value/g" $file;

				echo "找到文件:"$file "替换kv:"$kv;
			fi
		done
	done

	echo "----5.2	全部替换完成"
}

function main(){

	locateWebapp $app $area;

	locateVmConfig;

	findAppProperties;

	loadVmKvSet;

	doReplace;

	SUCESS_EXIT "所有应用已经检查并启动完毕";
}

main;


